9.2 Abfragen
 
Formulare können entweder auf Tabellen oder auf Abfragen gesetzt werden. Dienen die Formulare zur reinen Dateneingabe, dann könnten sie direkt auf eine Tabelle aufgesetzt werden. Sollen Daten beim Weiterblättern in einer bestimmten Reihenfolge angezeigt werden, dann sollte das Formular eine Abfrage verwenden, die auf den Daten einer Tabelle basiert.
Abfragen sind das eigentliche Zentrum einer Datenbank. In ihnen wird sortiert, gefiltert, gerechnet und mit ihrer Hilfe kann man neue Tabellen erstellen, Datensätze aus Tabellen löschen oder anfügen. Da dies nicht zum Thema der Formulare gehört, beschränken wir uns auf zwei Funktionen der Abfragen »Filtern« und »Sortieren«.
9.2.1 Sortieren in einer Abfrage
 
Wählen Sie die Entwurfsansicht für eine neue Abfrage, dann werden Sie nach der Tabelle gefragt, auf der diese basiert. Abfragen können auch auf Abfragen aufgesetzt werden.
Abbildung 9.2
Eine neue Abfrage wird erstellt.
In der Entwurfsansicht der Abfrage findet sich im oberen Teil die Feldliste. In ihr stehen die Namen der Felder der Tabelle. Dieses Fenster kann verschoben und vergrößert werden. Ist eines der Felder fett formatiert, dann bedeutet dies, dass es sich hier um den Primärschlüssel handelt. Die einzelnen Felder können mit einem Doppelklick auf ihren Namen oder mit der Maus per Drag & Drop in den Entwurfsbereich heruntergezogen werden. Ebenso kann der Feldname auch aus der Dropdown-Liste ausgewählt werden. So könnte man beispielsweise alle Felder einer Tabelle in die Abfrage aufnehmen (mit (Umschalt) oder (Strg) können mehrere Felder markiert werden. Nun könnte aus dem Dropdown-Feld »Sortierung« die Sortierung (auf- oder absteigend) eingeschaltet werden. Diese Lösung erweist sich allerdings als nicht sehr glücklich. Soll zum Beispiel in einer Namensliste zuerst nach dem Zunamen und anschließend nach dem Vornamen sortiert werden, dann versagt die eben beschriebene Lösung. Geschickter ist es, anstatt jedes Feld einzeln in die Abfrage zu ziehen, die gesamte Tabelle nach unten zu holen. Sie wird in der Feldliste durch ein »*« repräsentiert.
Nun können zur Tabelle zusätzlich ein Feld oder mehrere Felder hinzugefügt werden. Für sie wird nun ein Sortierkriterium festgelegt. Access liest die Abfragekriterien von links nach rechts. Soll also eine Namensliste zuerst nach dem Zunamen, dann nach dem Vornamen sortiert werden, dann sind die beiden Felder in dieser Reihenfolge nebeneinander einzugeben. Damit sie in der Datenblattansicht nicht zweimal auftauchen (in der Tabelle und als Sortierkriterium), sollte das Feld »Anzeigen« deaktiviert werden.
Abbildung 9.3
Die Abfrage dient zum Sortieren.
Das Ergebnis der Abfrage kann jederzeit über das Symbol oder den Menüpunkt Ansicht . Datenblattansicht angesehen werden (falls kein Fehler gemacht wurde). Als dritte »Ansicht« steht Ihnen noch der interne SQL-Befehl zur Verfügung, der für unsere Programmierung von Interesse ist. Dieser Befehl repräsentiert die eigentliche Abfrage. Glücklicherweise muss er nicht eingegeben werden, sondern kann in der Entwurfsansicht per Drag & Drop erzeugt werden. Umgekehrt könnte die Abfrage über die SQL-Ansicht verändert werden.
Abbildung 9.4
Die Datenblattansicht der Abfrage
Abbildung 9.5
Der SQL-Befehl der Abfrage
Übrigens kann das Sortieren der Tabelle beschleunigt werden, wenn auf das Feld ein Index gelegt wird. Dabei gibt es Indizes mit und ohne Duplikate. Die Liste sämtlicher gesetzter Indizes einer Tabelle kann über den Menüpunkt Ansicht . Indizes eingesehen werden.
Jede Änderung in einer Tabelle wird in die Abfrage übernommen. Änderungen in sortierten Abfragen werden in die Tabelle geschrieben. Sollen in einem Formular nicht alle Datensätze verwendet werden, dann können die benötigten Informationen in der Abfrage gefiltert werden.
9.2.2 Filtern in einer Abfrage
 
Zum Filtern ist es nötig, den Typ des Felds zu kennen, nach dem gefiltert wird. Zwar erlaubt Access bei der Eingabe gewisse Unschärfen, die automatisch korrigiert werden, aber wenn Sie Datum und Text verwechseln, kann es zu Fehlern kommen.
Gefiltert wird auf die gleiche Weise wie sortiert: Man kann das Symbol für die gesamte Tabelle (»*«) nach unten ziehen und daneben einzelne Spalten wiederholen. In ihnen werden die Filterkriterien eingestellt. Dabei stehen folgende Möglichkeiten zur Verfügung:
Tabelle 9.3
Die Filterkriterien der Abfrage
| Datentyp
|
Filterkriterien
|
Beispiel
|
| Zahl
|
= (oder nichts), <, >, <=, >=
|
7
>7
|
|
|
zwischen, und, oder, nicht
|
zwischen 1 und 4
1 oder 2 oder 3 oder 4
>=1 und <=4
|
| Datum, Uhrzeit
|
wie Zahlen. Das Datum kann normal eingegeben werden und wird in der Regel als solches erkannt. Es wird in Access mit Zahlenzeichen eingeschlossen (#)
|
#01.04.2001#
zwischen #01.01.2001# und #31.12.2001#
|
| Text
|
» «
|
»Maier«
»Maier« oder »Müller« oder »Moshammer«
|
|
|
* (Platzhalter für beliebig viele Zeichen)
? (Platzhalter für ein Zeichen)
|
wie »M*« liefert alle Namen, die mit »M« beginnen
|
|
|
[ - ] (Bereiche)
|
wie » [A-M]* « liefert alle Namen, die mit einem Buchstaben von A bis M beginnen
|
| Ja/Nein
|
Ja oder Nein
|
Ja filtert alle Wahrwerte
|
| Zahl, Text, Datum
|
ist Null
|
liefert alle leeren Felder
|
|
|
ist nicht Null
|
liefert alle Felder, in denen irgendetwas steht
|
Abbildung 9.6
Die Daten werden gefiltert.
Abbildung 9.7
Die SQL-Ansicht
|